--- a/nss/lib/dbm/src/dirent.h
+++ b/nss/lib/dbm/src/dirent.h
@@ -30,7 +30,7 @@
 #define MAXNAMLEN FILENAME_MAX
 
 #else
-#include <param.h>
+#include <sys/param.h>
 #endif
 #endif
 
--- a/nss/coreconf/rules.mk
+++ b/nss/coreconf/rules.mk
@@ -176,7 +176,7 @@ $(LIBRARY): $(OBJS) | $$(@D)/d
 ifeq (,$(filter-out _WIN%,$(NS_USE_GCC)_$(OS_TARGET)))
 	$(AR) $(subst /,\\,$(OBJS))
 else
-	$(AR) $(OBJS)
+	$(AR) rcs $@ $(OBJS)
 endif
 	$(RANLIB) $@
 
--- a/nss/coreconf/arch.mk
+++ b/nss/coreconf/arch.mk
@@ -284,7 +284,7 @@ else
     OBJDIR_NAME_COMPILER = $(COMPILER_TAG)
 endif
 OBJDIR_NAME_BASE = $(OS_TARGET)$(OS_RELEASE)$(CPU_TAG)$(OBJDIR_NAME_COMPILER)$(LIBC_TAG)$(IMPL_STRATEGY)$(OBJDIR_TAG)
-OBJDIR_NAME = $(OBJDIR_NAME_BASE).OBJ
+OBJDIR_NAME = build_dir
 
 
 ifeq (,$(filter-out WIN%,$(OS_TARGET)))
--- a/nss/coreconf/Linux.mk
+++ b/nss/coreconf/Linux.mk
@@ -114,11 +114,6 @@ LIBC_TAG		= _glibc
 endif
 
 ifdef BUILD_OPT
-ifeq (11,$(ALLOW_OPT_CODE_SIZE)$(OPT_CODE_SIZE))
-	OPTIMIZER = -Os
-else
-	OPTIMIZER = -O2
-endif
 ifdef MOZ_DEBUG_SYMBOLS
 	ifdef MOZ_DEBUG_FLAGS
 		OPTIMIZER += $(MOZ_DEBUG_FLAGS)
@@ -150,7 +145,8 @@ ifdef USE_PTHREADS
 	DEFINES		+= -D_REENTRANT
 endif
 
-DSO_CFLAGS		= -fPIC
+ifndef USE_NATIVE
+DSO_CFLAGS		= $(fpic)
 DSO_LDOPTS		= -shared $(ARCHFLAG) -Wl,--gc-sections
 # The linker on Red Hat Linux 7.2 and RHEL 2.1 (GNU ld version 2.11.90.0.8)
 # incorrectly reports undefined references in the libraries we link with, so
@@ -166,6 +162,7 @@ LDFLAGS		   += $(ARCHFLAG) -z noexecstac
 ifdef _SBOX_DIR
 LDFLAGS			+= -Wl,-rpath-link,/usr/lib:/lib
 endif
+endif
 
 G++INCLUDES		= -I/usr/include/g++
 
@@ -201,7 +198,7 @@ RPATH = -Wl,-rpath,'$$ORIGIN:/opt/sun/pr
 endif
 endif
 
-MKSHLIB         = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) $(RPATH)
+MKSHLIB         = $(CC) $(DSO_LDOPTS) -Wl,-soname -Wl,$(@:$(OBJDIR)/%.so=%.so) $(RPATH) $(fpic) -Wl,--gc-sections,--as-needed
 
 ifdef MAPFILE
 	MKSHLIB += -Wl,--version-script,$(MAPFILE)
--- a/nss/coreconf/UNIX.mk
+++ b/nss/coreconf/UNIX.mk
@@ -10,7 +10,6 @@ AR          = ar cr $@
 LDOPTS     += -L$(SOURCE_LIB_DIR)
 
 ifdef BUILD_OPT
-	OPTIMIZER  += -O
 	DEFINES    += -UDEBUG -DNDEBUG
 else
 	OPTIMIZER  += -g
